package com.ingenio.siot.adapter;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.ingenio.siot.Adapter;
import com.ingenio.siot.entity.Estado;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

public class EstadoAdapter extends Adapter{
	
	public List<Estado> devolverTodos() throws Exception{
    	Connection conn = null;
    	List<Estado> estados = new ArrayList<Estado>();
    	PreparedStatement stmt = null;
		try {
			conn = (Connection) abrirConexion();
			String sel ="SELECT * from estados ";
    		stmt = (PreparedStatement) conn.prepareStatement(sel);
    		ResultSet result = stmt.executeQuery();
    		Estado e = null;
    		
    		while(result.next()){
    			Integer idEstado = result.getInt("IdEstado");
    			String descripcion = result.getString("descEstado");
    			String color = result.getString("colorLinea");
    			e = new Estado(idEstado, descripcion, color); 
    			estados.add(e);
    		}
		}
		catch (Exception e) {
			e.printStackTrace();
			throw new Exception("Error al conectar con la base de datos.", e);
		}
    	finally{
    		cerrarConexion(conn);
    	}
    	return estados;
    }
	
	public Estado devolverEstado(Integer idEstado) throws Exception{
		Connection conn = null;
		PreparedStatement stmt = null;
		Estado est = null;
    	try {
    		conn = (Connection) abrirConexion();
    		String query ="SELECT * FROM estados WHERE IdEstado=? ";
    		stmt = (PreparedStatement) conn.prepareStatement(query);
    		stmt.setInt(1, idEstado);
    		ResultSet result = stmt.executeQuery();
    		if(result.next()){
    			String descripcion = result.getString("descEstado");
    			String color = result.getString("colorLinea");
    			est = new Estado(idEstado, descripcion, color); 
    		}
    	}
    	catch (Exception e) {
			e.printStackTrace();
			throw new Exception("Error al conectar con la base de datos.", e);
		}
    	finally{
    		//conn.close();
    		cerrarConexion(conn);
    	}
		return est;
	}
	
	public Estado devolverEstado(Integer idEstado, Connection conn) throws Exception{
		PreparedStatement stmt = null;
		Estado est = null;
    	try {
    		String query ="SELECT * FROM estados WHERE IdEstado=? ";
    		stmt = (PreparedStatement) conn.prepareStatement(query);
    		stmt.setInt(1, idEstado);
    		ResultSet result = stmt.executeQuery();
    		if(result.next()){
    			String descripcion = result.getString("descEstado");
    			String color = result.getString("colorLinea");
    			est = new Estado(idEstado, descripcion, color); 
    		}
    	}
    	catch (Exception e) {
			e.printStackTrace();
			throw new Exception("Error al conectar con la base de datos.", e);
		}
		return est;
	}
}
